package simple.array;

/**
 * <a href="https://leetcode.cn/problems/monotonic-array/">896. 单调数列</a>
 * 如果数组是单调递增或单调递减的，那么它是 单调 的。
 * 如果对于所有 i <= j，nums[i] <= nums[j]，那么数组 nums 是单调递增的。 如果对于所有 i <= j，nums[i]> = nums[j]，那么数组 nums 是单调递减的。
 * 当给定的数组 nums 是单调数组时返回 true，否则返回 false。
 * 示例 1：
 *   输入：nums = [1,2,2,3]
 *   输出：true
 * 示例 2：
 *   输入：nums = [6,5,4,4]
 *   输出：true
 * 示例 3：
 *   输入：nums = [1,3,2]
 *   输出：false
 * 提示：
 *   1 <= nums.length <= 10^5
 *   -10^5 <= nums[i] <= 10^5
 * @author 刘学松
 * @date 2023-06-29 14:30
 */
public class 单调数列 {
    public boolean isMonotonic(int[] nums) {
        int last = nums[0];
        // 整体方向，true表递增，false表示递减（或平平）
        boolean flag = last < nums[nums.length - 1];
        for (int num : nums) {
            if (last != num) {
                if (last < num != flag) {
                    return false;
                }
                last = num;
            }
        }
        return true;
    }
}
